package com.pb.metadata.mapper;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * 数据库用户管理
 * 2021/2/20
 */
@Mapper
@Repository
public interface DataBaseManagementMapper {

    /**
     *查询分页数据
     * @param paramMap
     * @return
     */
    List<Map<String, Object>> select(Map<String, Object> paramMap);

    /**
     *数据库管理新建数据
     * @param paramMap
     * @return
     */
    Integer insert(Map<String, Object> paramMap);

    /**
     *数据库管理修改数据
     * @param paramMap
     * @return
     */
    Integer update(Map<String, Object> paramMap);

    /**
     *通过数据库url修改
     * @param paramMap
     * @return
     */
    Integer updateByUrl(Map<String, Object> paramMap);

    /**
     *获取数据库数据
     * @return
     */
    List<Map<String,Object>> getDatabaseList();

    /**
     *删除数据库
     * @param list
     */
    void delete(List<String> list);

    /**
     *启用停用数据库
     * @param paramMap
     */
    void startOrStop(Map<String, Object> paramMap);

    /**
     *查询数据库用户
     * @param paramMap
     * @return
     */
    List<Map<String,Object>> getDbUserDataList(Map<String, Object> paramMap);

    /**
     * 保存数据库用户
     * @param databaseId
     * @param databaseUserId
     * @param databaseUser
     * @param createUser
     * @param createTime
     * @return
     */
    Integer setDbUserData(@Param("databaseId") String databaseId, @Param("databaseUserId") String databaseUserId, @Param("databaseUser") String databaseUser, @Param("createUser") String createUser, @Param("createTime") String createTime);

    /**
     * 数据库用户序号最大值
     * @param databaseId
     * @param databaseUser
     * @return
     */
    Integer getCount(@Param("databaseId") String databaseId, @Param("databaseUser") String databaseUser);

    /**
     * 数据库序号最大值
     * @param databaseUrl
     * @return
     */
    Integer getDataBaseCountByUrl(@Param("databaseUrl") String databaseUrl);

    /**
     * 删除数据库用户
     * @param databaseId
     * @param databaseUser
     */
    void delDbUserData(@Param("databaseId") String databaseId, @Param("databaseUser") String databaseUser);

    /**
     * 查询当前数据库序号
     * @return
     */
    String maxColumnId();

}
